// pages/orderrecord/orderrecord.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        orderList: []
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        this.getOrderList();
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        // 每次显示页面时刷新数据
        this.getOrderList();
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {
        this.getOrderList();
        wx.stopPullDownRefresh();
    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },

    // 获取预约记录
    getOrderList() {
        const userInfo = wx.getStorageSync('userInfo');
        if (!userInfo || !userInfo.id) {
            wx.showToast({
                title: '请先登录',
                icon: 'none'
            });
            return;
        }

        wx.request({
            url: `${getApp().globalData.baseUrl}/admin/booking/list`,
            method: 'GET',
            data: {
                userId: userInfo.id
            },
            success: (res) => {
                console.log(res);
                if (res.data.code === 0) {
                    const orderList = res.data.data.list.map(item => {
                        // 处理预约状态
                        const status = this.getOrderStatus(item);
                        return {
                            ...item,
                            statusText: status.text,
                            statusClass: status.class
                        };
                    });

                    this.setData({
                        orderList
                    });
                } else {
                    wx.showToast({
                        title: res.data.message || '获取预约记录失败',
                        icon: 'none'
                    });
                }
            },
            fail: () => {
                wx.showToast({
                    title: '网络请求失败',
                    icon: 'none'
                });
            }
        });
    },

    // 处理预约状态
    getOrderStatus(order) {
        // 当前时间
        const now = new Date();
        
        // 解析预约时间段
        const [startTime, endTime] = order.timeSlot.split('-');
        // 格式化结束时间，确保格式为 HH:mm
        const formattedEndTime = endTime.trim().replace(/：/g, ':');
        
        // 预约日期和结束时间组合
        const orderEndDateTime = new Date(`${order.date} ${formattedEndTime}`);
        
        // 输出调试信息
        console.log('当前时间:', now.toLocaleString());
        console.log('预约日期:', order.date);
        console.log('结束时间:', formattedEndTime);
        console.log('完整结束时间:', orderEndDateTime.toLocaleString());
        console.log('是否已过期:', now > orderEndDateTime);
        console.log('预约状态:', order.status);

        if (order.status === 3) { // 已取消
            return {
                text: '已取消',
                class: 'status-cancelled'
            };
        } else if (order.status === 2) { // 已到位
            return {
                text: '已到位',
                class: 'status-arrived'
            };
        } else if (now > orderEndDateTime && (order.status === 1 || order.status === 0)) { // 超过预约结束时间且未到位或待审核，则违约
            return {
                text: '已违约',
                class: 'status-violated'
            };
        } else { // 待到位
            return {
                text: '待到位',
                class: 'status-pending'
            };
        }
    },

    // 扫码功能
    scanCode() {
        const userInfo = wx.getStorageSync('userInfo');
        console.log(userInfo)
        if (!userInfo || !userInfo.id) {
            wx.showToast({
                title: '请先登录',
                icon: 'none'
            });
            return;
        }

        wx.scanCode({
            success: (res) => {
                let params;
                try {
                    params = JSON.parse(res.result);
                } catch (e) {
                    wx.showToast({
                        title: '二维码格式错误',
                        icon: 'none'
                    });
                    return;
                }
                // 获取当前日期和时间
                const now = new Date();
                const date = now.toISOString().slice(0, 10); // YYYY-MM-DD
                const time = now.toTimeString().slice(0, 5); // HH:MM
                console.log(JSON.parse(res.result));
                wx.request({
                    url: `${getApp().globalData.baseUrl}/admin/booking/verify`,
                    method: 'POST',
                    data: {
                        userId: userInfo.id,
                        roomId: params.roomId,
                        buildingId: params.buildingId,
                        date: date,
                        time: time
                    },
                    success: (res) => {
                        if (res.data.code === 200) {
                            wx.showToast({
                                title: '核销成功',
                                icon: 'success'
                            });
                            // 刷新预约列表
                            this.getOrderList();
                        } else {
                            wx.showToast({
                                title: res.data.message || '核销失败',
                                icon: 'none'
                            });
                        }
                    },
                    fail: () => {
                        wx.showToast({
                            title: '网络请求失败',
                            icon: 'none'
                        });
                    }
                });
            },
            fail: (err) => {
                wx.showToast({
                    title: '扫码失败，请重试',
                    icon: 'none'
                });
            }
        });
    }
})